package com.ship.system.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.annotation.Excel;
import com.ship.common.core.base.Constant;
import com.ship.common.core.base.Joinable;
import com.ship.common.core.base.PageBean;
import com.ship.common.core.enums.ModuleTypeEnum;
import com.ship.common.core.utils.Constants;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 系统消息信息表
 * @TableName sys_message
 */
@TableName(value ="sys_message")
@Data
public class SysMessage extends PageBean implements Joinable {
    /**
     * 主键id
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    private Long id;

    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    @Excel(name = "消息名称")
    private String messageTitle;

    /**
     * 消息内容
     */
    @ApiModelProperty(value = "消息内容")
    @Excel(name = "消息内容")
    private String messageContent;

    /**
     * 消息模块类型（见字典枚举）
     */
    @ApiModelProperty(value = "消息模块类型（见字典枚举）")
    @TableField(exist = false)
    @Excel(name = "消息模块")
    private String moduleTypeString;

    public String getModuleTypeString(){
        Integer moduleType = getModuleType();
        if(moduleType != null){
            return ModuleTypeEnum.getValueByCode(moduleType);
        }
        return null;
    }

    /**
     * 内容跳转地址
     */
    @ApiModelProperty(value = "内容跳转地址")
    private String messageUrl;

    /**
     * 消息触发状态（0：关闭，1：开启）
     */
    @ApiModelProperty(value = "消息触发状态（0：关闭，1：开启）")
    private Integer messageStatus;

    /**
     * 任务触发状态（0：关闭，1：开启）
     */
    @ApiModelProperty(value = "任务触发状态（0：关闭，1：开启）")
    private Integer taskStatus;

    /**
     * 消息模块类型（见字典枚举）
     */
    @ApiModelProperty(value = "消息模块类型（见字典枚举）")
    private Integer moduleType;

    /**
     * 提醒时间
     */
    @ApiModelProperty(value = "提醒时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date noticeTime;

    /**
     * 提醒时间
     */
    @ApiModelProperty(value = "提醒时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "提醒时间")
    @TableField(exist = false)
    private String noticeTimeFormat;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;

    /**
     * 通知人用户ID
     */
    @ApiModelProperty(value = "通知人用户ID")
    private Long noticeUid;

    /**
     * 任务完成状态（0：未完成，1：已完成）
     */
    @ApiModelProperty(value = "任务完成状态（0：未完成，1：已完成）")
    private Integer finishStatus;

    /**
     * 已读状态（0：未读，1：已读）
     */
    @ApiModelProperty(value = "已读状态（0：未读，1：已读）")
    @Excel(name = "状态", readConverterExp = "0=未读,1=已读")
    private Integer readStatus;

    /**
     * 导出时使用参数，选中的IDs
     */
    @TableField(exist = false)
    private List<Long> ids;

    @Override
    public String getLabel() {
        return null;
    }

    @Override
    public String getValue() {
        return null;
    }
}